﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Niknak.Services.ServiceCore
{
    /// <summary>
    /// Enums used for ServiceCore logic
    /// </summary>
    public class InternalEnums
    {
        /// <summary>
        /// Enums used only for MSMQ logic
        /// </summary>
        public class Msmq
        {
            /// <summary>
            /// Outcomes of message process job
            /// </summary>
            public enum ResultStatus
            {
                Undetermined,
                Success,
                Fail,
                Skipped
            }
        }

        /// <summary>
        /// Enums used only for TaskScheduler logic
        /// </summary>
        public class TaskScheduler
        {
            /// <summary>
            /// Defines standard types of task interval
            /// </summary>
            public enum IntervalType
            {
                Custom = 0,
                Minutely = 1,
                Hourly = 2,
                Daily = 3,
                Weekly = 4,
                Fortnightly = 5,
                Monthly = 6
            }

            /// <summary>
            /// Used to define when a task iteration is valid to run
            /// </summary>
            [Flags]
            public enum DaysOfWeek
            {
                Unknown = 0,
                All = 1,
                Monday = 2,
                Tuesday = 4,
                Wednesday = 8,
                Thursday = 16,
                Friday = 32,
                Saturday = 64,
                Sunday = 128
            }

            /// <summary>
            /// Used for logging events to indicate the severity of the log message
            /// </summary>
            public enum LoggingMessageSeverity
            {
                Unknown = 0,
                Information = 1,
                Warning = 2,
                Error = 3
            }
        }
    }
}
